#include <iostream>
using namespace std;
// g++ -o object_array object_array.cc -std=c++11
class CSample {
 public:
  CSample() {  //构造函数 1
    cout << "Constructor 1 Called" << endl;
  }
  CSample(int n) {  //构造函数 2
    cout << "Constructor 2 Called" << endl;
  }
  CSample(int m, int n) {  // 构造函数 3
    cout << "Constructor 3 Called" << endl;
  }
};

void test() {
  cout << "stepl" << endl;
  CSample arrayl[2];

  cout << "step2" << endl;
  CSample array2[2] = {4, 5};

  cout << "step3" << endl;
  CSample array3[2] = {3};

  cout << "step4" << endl;
  CSample* array4 = new CSample[2];
  delete[] array4;

  // 在构造函数有多个参数时，数组的初始化列表中要显式地包含对构造函数的调用
  cout << "step5" << endl;
  CSample array5[2] = {4, CSample(4, 6)};
}
int main() {
  test();
  return 0;
}